package com.mindskip.xzs.base;

//这段代码定义了一个通用的 REST 响应类 RestResponse，用于封装 API 的响应数据。它支持泛型，能够灵活地处理各种类型的响应内容。
public class RestResponse<T> {
    // 响应代码，通常用于表示请求的处理结果（例如成功、错误、未授权等）。
    private int code;

    // 响应消息，提供关于请求处理结果的描述信息。
    private String message;

    // 响应数据，类型为泛型 T，可以是任何类型的数据。
    private T response;

    // 构造函数，用于仅设置响应代码和消息
    public RestResponse(int code, String message) {
        this.code = code;
        this.message = message;
    }

    // 构造函数，用于设置响应代码、消息和数据
    public RestResponse(int code, String message, T response) {
        this.code = code;
        this.message = message;
        this.response = response;
    }

    // 静态方法，用于创建一个失败的响应
    public static RestResponse fail(Integer code, String msg) {
        return new RestResponse<>(code, msg);
    }

    // 静态方法，用于创建一个成功且无数据的响应
    public static RestResponse ok() {
        SystemCode systemCode = SystemCode.OK;
        return new RestResponse<>(systemCode.getCode(), systemCode.getMessage());
    }

    // 静态方法，用于创建一个成功且有数据的响应
    public static <F> RestResponse<F> ok(F response) {
        SystemCode systemCode = SystemCode.OK;
        return new RestResponse<>(systemCode.getCode(), systemCode.getMessage(), response);
    }

    //这些方法用于获取和设置 RestResponse 对象的成员变量。这些方法使得 RestResponse 对象可以灵活地获取和修改其内部状态。
    // 获取响应代码
    public int getCode() {
        return code;
    }

    // 设置响应代码
    public void setCode(int code) {
        this.code = code;
    }

    // 获取响应消息
    public String getMessage() {
        return message;
    }

    // 设置响应消息
    public void setMessage(String message) {
        this.message = message;
    }

    // 获取响应数据
    public T getResponse() {
        return response;
    }

    // 设置响应数据
    public void setResponse(T response) {
        this.response = response;
    }
}
